package cn.line5.organization;

import java.util.List;

import cn.line5.seam.db.PageResult;

/**
 * <h1>模块管理数据库接口类</h1>
 * 
 * @author Liu,Xiaojun
 */
public interface OrganizationDao {
	/**
	 * 查询子机构列表
	 */
	public List<OrganizationVo> getOrganizationList(String parentId);

	/**
	 * 查询子机构分页列表
	 */
	public PageResult<OrganizationVo> getOrganizationPageList(String parentId,
			int currentPage);

	/**
	 * 查询机构信息
	 */
	public OrganizationVo getOrganization(String organizationId);

	/**
	 * 获取同级机构最大ID
	 */
	public String getOrganizationMaxId(String parentId);

	/**
	 * 获取同级机构最大排序
	 */
	public Integer getOrganizationMaxSort(String parentId);

	/**
	 * 添加机构
	 */
	public Boolean addOrganization(OrganizationVo vo);

	/**
	 * 修改机构
	 */
	public Boolean modifyOrganization(OrganizationVo vo);

	/**
	 * 保存机构排序
	 */
	public Boolean saveOrganizationSort(OrganizationVo vo);

	/**
	 * 删除机构及子机构
	 */
	public Boolean deleteOrganization(String organizationId);

	/**
	 * 查询用户分页列表
	 */
	public PageResult<UserVo> getUserPageList(String organizationId,
			int currentPage);

	/**
	 * 查询用户信息
	 */
	public UserVo getUser(String userId);
	
	/**
	 * 根据登录名查询用户信息
	 */
	public UserVo getUserByLoginName(String loginName);
	
	/**
	 * 查询机构下的用户数量
	 */
	public Integer getUserCountByOrganizationId(String organizationId);

	/**
	 * 添加用户
	 */
	public Boolean addUser(UserVo vo);

	/**
	 * 修改用户
	 */
	public Boolean modifyUser(UserVo vo);

	/**
	 * 修改用户密码
	 */
	public Boolean modifyLoginPassword(UserVo vo);

	/**
	 * 修改用户状态
	 */
	public Boolean modifyUserStatus(UserVo vo);
	
	/**
	 * 修改用户所属部门
	 */
	public Boolean modifyOrganization(UserVo vo);

	/**
	 * 修改用户登录次数
	 */
	public Boolean modifyLoginNum(UserVo vo);

	/**
	 * 删除用户
	 */
	public Boolean deleteUser(String userId);
	
	/**
	 * 删除用户下的所有权限
	 */
	public Boolean removePermission(String userId);

	/**
	 * 添加用户权限
	 */
	public Boolean addPermission(PermissionVo vo);
	
	/**
	 * 获取权限列表
	 */
	public List<PermissionVo> getPermissionList(PermissionVo vo);
}